package com.foreveross.law.base.dao;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * com.csair.udp.cmmon.dao.BaseDao.java
 * </p>
 * 
 * <p>
 * 泛型 ： T 表示实体类型；ID表示主键类型
 * </p>
 * 
 * @author liaocw(mail)
 * @version $Revision$ $Date$
 * @Modified by liaocw(mail) description
 * @purpose 抽象DAO层基类 提供一些简便方法
 */
public interface BaseRepository<T> {
	public void delete(String sqlId);

	public void delete(String sqlId, Map<?, ?> parameters);

	public int insert(String sqlId);

	public int insert(String sqlId, Map<?, ?> parameters);

	public int update(String sqlId);

	public int update(String sqlId, Map<?, ?> parameters);

	public int update(String sqlId, Object parameter);

	public List<T> find(String sqlId);

	public List<T> find(String sqlId, Object para);
	
	public List<T> find(String sqlId, Map<?, ?> parameters);

	public Long findNumber(String sqlId, Map<String, ?> parameter);

	public Object queryForObject(String sqlId);

	public Object queryForObject(String sqlId, Object para);

	public int[] batchStatement(String sqlId, List<?> list);

	public int[] batchStatement(String[] sql, List<?> list);

	/**
	 * 批量执行：多条语句系统的参数
	 * 
	 * @param sql
	 * @param para
	 * @return
	 */
	public int[] batchStatement(String[] sql, Object para);

	/**
	 * 批量执行：多条语句系统的参数
	 * 
	 * @param sql
	 * @param para
	 * @return
	 */
	public int[] batchStatement(String[] sql, Map<String, ?> parameter);
}
